/**
 * 根据方向矩阵自动判断扫描方向
 * @param {Array} orientation 方向数组，格式为 [rX, rY, rZ, cX, cY, cZ, nX, nY, nZ]
 * @returns {string} 扫描方向
 */
export function determineScanOrientation(orientation) {
    if (!Array.isArray(orientation) || orientation.length !== 9) {
        return '输入格式错误';
    }

    const row = orientation.slice(0, 3); // 行向量
    const col = orientation.slice(3, 6); // 列向量
    const norm = orientation.slice(6, 9); // 法向量

    let top = '', bottom = '', left = '', right = '';

    const absNorm = norm.map(Math.abs);

    // 找出法向量最大分量，代表主切面方向
    const maxIndex = absNorm.indexOf(Math.max(...absNorm));

    if (maxIndex === 0) { // Sagittal
        top = 'H'; // Head (头)
        bottom = 'F'; // Feet (脚)
        left = 'P'; // Posterior (后)
        right = 'A'; // Anterior (前)
        return {
            bodyPosition: {
                top,
                bottom,
                left,
                right
            },
            label: '矢状面 (Sagittal)'
        };
    } else if (maxIndex === 1) { // Coronal
        top = 'H'; // Head (头)
        bottom = 'F'; // Feet (脚)
        left = 'R'; // Right (右)
        right = 'L'; // Left (左)
        return {
            bodyPosition: {
                top,
                bottom,
                left,
                right
            },
            label: '冠状面 (Coronal)'
        };
    } else if (maxIndex === 2) { // Axial
        top = 'A'; // Anterior (前)
        bottom = 'P'; // Posterior (后)
        left = 'R'; // Right (右)
        right = 'L'; // Left (左)
        return {
            bodyPosition: {
                top,
                bottom,
                left,
                right
            },
            label: '横断面 (Axial)'
        };
    } else {
        return '未知切面';
    }
}

// 示例
// const example1 = [1, 0, 0, 0, 1, 0, 0, 0, 1]; // 横断面
// const example2 = [0, 1, 0, 0, 0, 1, 1, 0, 0]; // 矢状面
// const example3 = [1, 0, 0, 0, 0, 1, 0, 1, 0]; // 冠状面

// console.log(determineScanOrientation(example1)); // 输出: 横断面 (Axial)
// console.log(determineScanOrientation(example2)); // 输出: 矢状面 (Sagittal)
// console.log(determineScanOrientation(example3)); // 输出: 冠状面 (Coronal)
